
#!/bin/bash
#准备阶段
if [ $# -lt 2 ]
then
echo "输入参数要大于等于2"
echo "第1个参数为包列表文件名"
echo "第2个参数为项目标识:如junYi,guokeda,29suo以此指定打包的包列表文件名、启动脚本名"
echo "使用方式如为./distribution-src-pack.sh ./packages-junYi.txt junYi"
exit 1
fi

#此打包脚本用于将源代码（不包括.git文件夹）、节点打包脚本、节点安装脚本、节点启动脚本
proj=$2
echo "proj:$proj"


funInsDir (){
echo "创建目录存放程序"
rm -fr ./nodes/src
if [ ! -d "./nodes/src" ]
then
mkdir -p ./nodes/src
fi
}


#打包DDS程序，优先拷贝/usr/bin/目录下的DDS2ROS程序，如没有再拷贝～/build/DDS2ROS下的
funpackDDS (){
if [ -d ~/DDS2ROS ]
then
  echo "拷贝~/DDS2ROS到 ./nodes"
  cp -fr ~/DDS2ROS  ./nodes/

else
  echo "目录~/DDS2ROS不存在"

fi
}


#打包某个程序，依据程序是否是DDS程序进行不同的处理
funPackOne (){
  
  isros=1
  if [ "$1" == "DDS2ROS" ]
  then
    isros=0
  elif [ "$1" == "behavior-process" ]
  then
#为行为节点程序时需要拷贝行为数xml文件
      echo "复制ros2_ws/src/behavior-process/tree到 ./nodes/tree"
      cp -fr ~/ros2_ws/src/behavior-process/tree ./nodes/
  fi

  if [ $isros -eq 1 ]
  then
#如为普通ros程序则直接拷贝src下对应文件即可,需先删除.git
echo "拷贝~/ros2_ws/src/$1"
    rm -fr ~/ros2_ws/src/$1/.git
    cp -fr ~/ros2_ws/src/$1 ./nodes/src/
  else
    funpackDDS
  fi
}


#每行代表一个程序名
#（程序名后以,结束）
#如行以#开头则忽略此程序打包
funPackAll (){
if [ ! -d ~/ros2_ws/src ]
then
echo "packalist file:$1 not exist" #如程序代码目录不存在则退出执行脚本
exit 1
fi

while read lne #读取列表中每行内容（程序名）
do
  line="${lne// /}"
  if [[ "$line" == "#"* ]] #是否以#开头
  then
  echo "skip $line" #如以#开头则跳过此程序的打包
  else
  arr=(${line//,/ }) #获取程序名，文件中每行需要以,结束
  len=${#arr[@]}
  if [ $len -lt 1 ] #是否找到程序名，名需以，结束
  then
  echo "skip $line" #如没找到程序名则跳过此行操作
  continue
  fi
  echo "${arr[0]}"

#判定是否需要打包此程序
  funPackOne ${arr[0]}
  
  fi
done < $1

}

funInsDir
funPackAll $1

echo "拷贝节点打包及安装脚本"
cp ./distribution-nodes-pack.sh ./nodes/distribution-nodes-pack.sh
cp ./distribution-nodes-install.sh ./nodes/distribution-nodes-install.sh
cp ./packages-$proj.txt ./nodes/packages-$proj.txt

echo "拷贝cpu gpu频率脚本"
cp ./max_gpu_freq.sh ./nodes/max_gpu_freq.sh
cp ./max_cpu_freq.sh ./nodes/max_cpu_freq.sh

echo "拷贝启动脚本到./nodes"
cp ./droneyee_fly/realfly_startup_$proj.sh ./nodes/realfly_startup.sh
cp ./droneyee_fly/check_restart_$proj.sh ./nodes/check_restart.sh

echo "拷贝mavros配置文件"
cp ./mavros_param_1.yaml ./nodes/mavros_param_1.yaml


tar -czvf nodes.tar.gz nodes
cat ./distribution-src-install.sh nodes.tar.gz > distribution-src-install.run

chmod +x distribution-src-install.run

rm -fr nodes
rm -fr nodes.tar.gz
echo "打包完成"















